/**
  ******************************************************************************
  *
  * 实验平台:蓉新电子51开发板 
  * 淘宝    :https://rongxindz.taobao.com
  ******************************************************************************
    *
  *
  *	    单片机串口与PC通信           										   *
  *     波特率9600                       								               *
  *			单片机将电脑发送的数据返回															   *
  ******************************************************************************
**/


/*预处理命令*/
#include <mcs51/8051.h> 		  //包含单片机寄存器的头文件
#define uchar unsigned char
#define uint unsigned int
uchar num,a;

/*
********************************************************************************
** 函数名称 ： main(void)
** 函数功能 ： 主函数
********************************************************************************
*/
unsigned int led_times = 0;
unsigned int flag = 1;
void change_led(){
    if (led_times >= 8) {
        flag = !flag;
        P0 = 0xff;
        led_times = 0;
    }
    P0 = flag ? P0 << 1 : P0 >> 1;
    led_times++;
}

void main()
{
	TMOD=0x20;		   //用定时器设置串口波特率	   9600 
	TH1=0xfd;
	TL1=0xfd;
	TR1=1;
	REN=1;          //串口初始化
	SM0=0;
	SM1=1;
	EA=1;           //开启总中断
	ES=1;
	while(1)
	{
		if(num==1)    //判断是否有串口数据的传送
		{
            change_led();
			ES=0;
			num=0;
			SBUF=a;			 //发送数据a到SBUF，即将单片机的数据发送到计算机
			while(!TI);
			TI=0;
			ES=1;
		}
	}	
}
void ser() __interrupt 4
{
	RI=0;
	P1=SBUF;			//接收数据SBUF，即将计算机的数据接收。
	a=SBUF;
	num=1;
}